昨天大概介紹了一下 ViewBuilder,今天來說一下 ViewBuilder 的一些限制。
上次提到 ViewBuilder 是一種 resultBuilder,那再點進去看一下 ViewBuilder 的宣告,可以看到裡面寫著 ViewBuilder 在什麼情況下該做什麼事,例如遇到 if 判斷,或是要組合兩個以上的 View。
那我們繼續往下滑,可以看到這裡組合多個 View 的方式是將多個 View 組合成一個叫做 TupleView 的 View,那可以看到這裡的最多只寫到將 10 個 View 組合的情況。
所以這裡就是 ViewBuilder 的一個限制:有支援 ViewBuilder 的 View,例如:Stack 系列,Group 等,這些 View 裡最多只能裝 10 個 View,多的它會無法處理。
那如果超過 10 個以上要怎麼辦,還記得上面提到的東西嗎?ViewBuilder 會將多個 View 組合成 “一個” 叫做 TupleView 的東西。
所以當你要裝下超過 10 個 View 的時候,可以先將 View 打包起來,這樣打包起來的就只會被當成一個 View。
當然,用來打包的 View,他的上限也是 10 個。
那說完 ViewBuilder 的限制之後,來稍微說一下 Lazy 吧。
上面提到 ViewBuilder 最多可以裝下 10 個 View,但是最好不要在裡面塞太多的 View,就算你能夠用打包的方式避開 ViewBuilder 的限制,因為這樣可能會影響到效能。
像是 Stack 系列或是 Grid,它們都是會將所有的子 View 都顯示出來,不論你會不會用到這個 View,它都會預處理好。
所以當你真的要用到很多的 View,這裡可以使用這些 View 的 Lazy 版本。
Lazy 版本的 View 跟一般 View 的差別在於,Lazy 版本只會在使用者有滑到那個畫面時才會出現,這樣就能避免影響到效能,只是在使用 Lazy 版本的時候,要注意排版設定,因為 Lazy 版本沒辦法取得子 View 的大小,與一般的 View 不太一樣,要特別注意。
那今天就介紹到這裡,明天來說一下 Property Wrapper 吧。